home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
FM Towns: Free Software Collection 8
/
FM Towns Free Software Collection 8.iso
/
fb386
/
io_bas
/
get_pcm.bas
< prev
next >
Wrap
BASIC Source File
|
1994-06-01
|
2KB
|
50 lines
10 '
20 ' < AD サンプリングデーターの取得 ( I/O 操作サンプル ) >
30 ' for F-BASIC 386 V2.1 L10 以上
40 ' Programmed by Luzz-tum
50 '
60 ' サブルーチン名「 *GET_PCM 」
70 ' このルーチンでは空気の振幅の度合いを取得します。この値をメチャ
80 ' クチャ速く連続して取っていくと、PCMデーターになります。つまり
90 ' 音の実体を数値化したデーターを得るという事です。
100 '
110 ' 単純に GOSUB *GET_PCM を実行すると変数 W_DAT にデーターが返っ
120 ' てきます。なお、返ってくる値は +126 から -129 までですが -128 以
130 ' 下の信頼性については断言しきれません、が、大丈夫なようです。
140 ' 又、これは音量ではないので、音量が最大でも値にゼロが返ってくる
150 ' 事もありえます。
160 '
170 ' このサンプル内の方法では、SND ファイルの中身は表示できません。
180 ' 表示したいという人は SND ファイルの PCM データーをすぐ表示できる
190 ' 形に変換するルーチンを別ファイル「 DISP_SND.BAS 」に収録していま
200 ' すので、そちらをご覧下さい。(自分の声を綺麗に表示するサンプル付
210 ' きです。)
220 '
230 '
240 SCREEN 0:SCREEN @0:VIEW:WINDOW:COLOR 7,0,7,0:CLS:WIDTH 80,25
250 DEFLNG A-Z:DIM BUF(200)
260 GET@A(0,0)-(256,0),BUF
270 PRINT "振幅データーをリアルタイム表示します。"
280 PRINT "マイクに何か音を入れてください。"
290 LOCATE 0,23:PRINT "リターンキーで終了します。"
300 GOSUB *MIC_ON
310 WHILE INKEY$<>CHR$(13)
320 Y=Y+1:Y=Y*-(Y<480):GOSUB *GET_PCM
330 PUT@A(331,Y)-(587,Y),BUF:LINE (460,Y)-(460+W_DAT,Y),PSET,7
340 WEND
350 GOSUB *MIC_OFF
360 END
370 '
380 *GET_PCM
390 W_DAT=INP(&H4E7,1)-129
400 RETURN
410 '
420 *MIC_ON
430 VOL(1)=64:GOSUB *VOL_SET:RETURN
440 *MIC_OFF
450 VOL(1)=0:GOSUB *VOL_SET:RETURN
460 *VOL_SET
470 IF VOL(1)=0 OUT &H04E3,2:OUT &H04E2,0:RETURN
480 OUT &H04E3,6:OUT &H04E2,VOL(1)-1
490 RETURN